1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.google.common.base;
18
19 import static com.google.common.base.Preconditions.checkNotNull;
20
21 import com.google.common.annotations.Beta;
22 import com.google.common.annotations.GwtCompatible;
23
24 import java.io.Serializable;
25
26 import javax.annotation.Nullable;
27
28
29
30
31
32
33
34
35 @GwtCompatible(emulated = true)
36 @Beta
37 public final class Enums {
38
39 private Enums() {}
40
41
42
43
44
45
46
47
48
49 public static <T extends Enum<T>> Optional<T> getIfPresent(
50 Class<T> enumClass, String value) {
51 checkNotNull(enumClass);
52 checkNotNull(value);
53 return Platform.getEnumIfPresent(enumClass, value);
54 }
55
56
57
58
59
60
61
62
63
64 public static <T extends Enum<T>> Converter<String, T> stringConverter(final Class<T> enumClass) {
65 return new StringConverter<T>(enumClass);
66 }
67
68 private static final class StringConverter<T extends Enum<T>>
69 extends Converter<String, T> implements Serializable {
70
71 private final Class<T> enumClass;
72
73 StringConverter(Class<T> enumClass) {
74 this.enumClass = checkNotNull(enumClass);
75 }
76
77 @Override
78 protected T doForward(String value) {
79 return Enum.valueOf(enumClass, value);
80 }
81
82 @Override
83 protected String doBackward(T enumValue) {
84 return enumValue.name();
85 }
86
87 @Override
88 public boolean equals(@Nullable Object object) {
89 if (object instanceof StringConverter) {
90 StringConverter<?> that = (StringConverter<?>) object;
91 return this.enumClass.equals(that.enumClass);
92 }
93 return false;
94 }
95
96 @Override
97 public int hashCode() {
98 return enumClass.hashCode();
99 }
100
101 @Override
102 public String toString() {
103 return "Enums.stringConverter(" + enumClass.getName() + ".class)";
104 }
105
106 private static final long serialVersionUID = 0L;
107 }
108 }
109